<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./lib/bootstrap-3.3.7.css">
</head>
<body>
    <div id="app">
        <div class="panel panel-primary">
              <label>
                搜索名称关键字：
                <!-- 注意： Vue中所有的指令，在调用的时候，都以 v- 开头 -->
                <input type="text" class="form-control" v-model="keywords" id="search" v-focus v-color="'green'">
              </label>
            </div>
          </div>
    </div>
    <script src="./lib/vue-2.4.0.js"></script>
    <script>
        // 使用  Vue.directive() 定义全局的指令  v-focus
        // 其中：参数1 ： 指令的名称，注意，在定义的时候，指令的名称前面，不需要加 v- 前缀, 
        // 但是： 在调用的时候，必须 在指令名称前 加上 v- 前缀来进行调用
        //  参数2： 是一个对象，这个对象身上，有一些指令相关的函数，这些函数可以在特定的阶段，执行相关的操作
        Vue.directive('focus', {
          bind: function (el) { // 每当指令绑定到元素上的时候，会立即执行这个 bind 函数，只执行一次
            // 注意： 在每个 函数中，第一个参数，永远是 el ，表示 被绑定了指令的那个元素，这个 el 参数，是一个原生的JS对象
            // 在元素 刚绑定了指令的时候，还没有 插入到 DOM中去，这时候，调用 focus 方法没有作用
            //  因为，一个元素，只有插入DOM之后，才能获取焦点
            // el.focus()
          },
          inserted: function (el) {  // inserted 表示元素 插入到DOM中的时候，会执行 inserted 函数【触发1次】
            el.focus()
            // 和JS行为有关的操作，最好在 inserted 中去执行，放置 JS行为不生效
          },
          updated: function (el) {  // 当VNode更新的时候，会执行 updated， 可能会触发多次

          }
        })

        // 自定义一个 设置字体颜色的 指令
        Vue.directive('color', {
          // 样式，只要通过指令绑定给了元素，不管这个元素有没有被插入到页面中去，这个元素肯定有了一个内联的样式
          // 将来元素肯定会显示到页面中，这时候，浏览器的渲染引擎必然会解析样式，应用给这个元素
          bind: function (el, binding) {
            // el.style.color = 'red'
            // console.log(binding.name)
            // 和样式相关的操作，一般都可以在 bind 执行

            // console.log(binding.value)
            // console.log(binding.expression)

            el.style.color = binding.value
          }
        })

        var vm = new Vue({
                el: '#app',
                data: {
                  id: '',
                  name: '',
                  keywords: '', // 搜索的关键字
                  list: [
                    { id: 1, name: '奔驰', ctime: new Date() },
                    { id: 2, name: '宝马', ctime: new Date() }
                  ]
                },
                methods: {

                }
         }
    </script>
</body>
</html>